[AJUDA] Script para renomear ficheiros com parte do nome actual. [RESOLVIDO]

1. [AJUDA] Script para renomear ficheiros com parte do nome actual. [RESOLVIDO]

Pedro
MetaBolic0

(usa Outra)

Enviado em 13/12/2011 - 09:08h

Olá a todos,

Eu ainda sou mesmo muito novo no shell script e normalmente o que faço é loops para o meu trabalho.

Neste caso tenho uma pasta com cerca de 1000 ficheiros com dados com o seguinte formato no título: log_ZINC00001995_out_ligand_1.txt (em que o número a seguir a ZINC é o que diferencia os ficheiros.

O que eu queria era por todos os ficheiros só com o nome ZINC(e o número correspondente)_score.txt exemplo:ZINC00001995_score.txt

Já pesquisei pela net e pelo VivaLinux encontrei este link: http://www.vivaolinux.com.br/topico/Comandos/Renomear-varios-arquivos-simultaneamente-1 mas não me ajuda pois eu preciso copiar o ZINC e o respectivo valor que já está presente no nome e não mudar extensões ou criar uma sequência de nomes.

Até agora e depois de várias tentativas e de pesquisar o meu script está assim:

#!/bin/bash

echo 'Mudar nomes dos ficheiros'
for f in $(*_out_ligand_1.txt)
do
echo $f
grep ZINC* | mv -v $f `grep ZINC`_score.txt
done



Mas quando corro o script diz-me: "line 11: log_ZINC00001995_out_ligand_1.txt: command not found"

Cálculo que o problema seja no comando grep combinado com o mv pois em algumas tentativas fazia o que queria mas passava tudo para um novo ficheiro _score.txt em vez de só me mudar o nome do ficheiro.

Agradeço desde já a ajuda.
Obrigado e Feliz Natal :D



  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 13/12/2011 - 10:49h

Veja se assim ajuda:


#!/bin/bash

echo "Mudar nomes dos ficheiros"
for f in $(ls *_out_ligand_1.txt);
do
PREFIXO=$(echo "$f" | cut -d'_' -f2)
mv "$f" "$PREFIXO"_score.txt
done




apenas estou pegando o nome base que você quer log_ZINC0000000_algumacoisa_aa.txt e fazendo dele o PREFIXO do novo nome. Pego o valor base com o cut, já que temos um delimitador fixo, _

3. Re: [AJUDA] Script para renomear ficheiros com parte do nome actual. [RESOLVIDO]

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 13/12/2011 - 10:49h


#!/bin/bash

echo "Mudar nomes dos ficheiros"
for oldName in $(ls | grep ZINC);
do
newName="ZINC$( echo $oldName | awk -FZINC {'print $NF'})"
mv -v $oldName $newName
done






4. Re: [AJUDA] Script para renomear ficheiros com parte do nome actual. [RESOLVIDO]

Pedro
MetaBolic0

(usa Outra)

Enviado em 13/12/2011 - 12:40h

Muito obrigado pela resposta.

O ambos resolveram mas o 1º ainda me deixava o ZINC000000_out_ligand_1.txt mas o 2º resolveu muito direitinho.

Muito obrigado



5. opa

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 13/12/2011 - 12:45h

tenta assim


#!/bin/bash
for i in `ls pasta_com_os_arquivos`; do
if [ ${i:4:4} == "ZINC" ];then
mv $i ${i:4:4}${i:8:8}_score.txt
fi
done


acho que assim fica mais sucinto saca? sei lá... rsrsr







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts